package com.leon.androidcoursedesign.ui.fragments.baseFragment;

import android.view.View;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * 用于绑定Fragment中控件的资源
 */
public class BindingUtils {
    private final View view;

    public BindingUtils(View view) {
        this.view = view;
    }

    /**
     * 给指定可设置文字的控件设置文字
     *
     * @param id    控件ID
     * @param text  文本
     * @return  返回该对象本身
     */
    public BindingUtils setText(int id, String text) {
        TextView view = this.view.findViewById(id);
        view.setText(text);

        return this;
    }

    /**
     * 对可以设置图片资源的控件设置图片
     *
     * @param id    控件ID
     * @param resId  图片资源ID
     * @return  返回该对象本身
     */
    public BindingUtils setImage(int id, int resId) {
        ImageView imageView = this.view.findViewById(id);
        imageView.setImageResource(resId);

        return this;
    }

    /**
     * 设置控件的点击事件
     *
     * @param id    控件ID
     * @param onClickListener   监听事件
     * @return  返回该对象本身
     */
    public BindingUtils setOnClickListener(int id, View.OnClickListener onClickListener) {
        View view = this.view.findViewById(id);
        view.setOnClickListener(onClickListener);

        return this;
    }

    /**
     * 设置控件的选中变化的监听
     * <strong>适合CompoundButton的子类</strong>
     *
     * @param id    控件ID
     * @param onCheckedChangeListener   选中变化事件
     * @return  返回该对象本身
     */
    public BindingUtils setOnCheckedChangeListener(int id, CompoundButton.OnCheckedChangeListener onCheckedChangeListener) {
        CompoundButton view = this.view.findViewById(id);
        view.setOnCheckedChangeListener(onCheckedChangeListener);

        return this;
    }
}
